<?php
class Proveedores extends APP_Controller{
    public function __construct() {
        parent::__construct();
        $this->isValidAjaxRequest();
        $this->load->model('Proveedores_model','proveedores');
        $this->setPageSize(12);
    }

    /**
     * Hace LLamado a la pagina principal de proveedores
     * En ella encontramos las funciones principales del modulo
     */
    function index()
    {
        $data = array(
            'idTab'=>$this->input->post('id'),
            'pageSize'=>$this->getPageSize(),
            'title'=>  get_class($this)
        );
        $this->load->view('proveedores/main',$data);
    }

    /**
     * Hace el llamado a la vista de formulario sin dato alguno
     */
    function add()
    {
        $data['gridPanelId'] = $this->input->post('gridPanelId');
        $this->load->view('proveedores/formulario',$data);
    }

    /**
     * Almacena los datos promovidos por la vista en modelo
     * imprime un mensaje en formato json
     */
    function save()
    {
        $this->load->library('form_validation');

        $rs = array();
        $successMsj = 'Los datos del proveedor fueron almacenados exitosamente.';
        $errorMsj = 'Los datos del proveedor no pudieron ser almacenados. Por Favor intente de nuevo';

        $this->form_validation->set_rules('nombre', 'Nombre', 'required');
        $this->form_validation->set_rules('direccion', 'Dirección', 'required');
        $this->form_validation->set_rules('email', 'Email', 'valid_email');
        $this->form_validation->set_rules('telefono', 'Telefono', 'required');

        if($this->form_validation->run()){
            try {
                $this->proveedores->setNombre($this->input->post('nombre'));
                $this->proveedores->setDireccion($this->input->post('direccion'));
                $this->proveedores->setEmail($this->input->post('email'));
                $this->proveedores->setTelefono($this->input->post('telefono'));
                $this->proveedores->setDesde();

                $this->proveedores->add();
                $rs['msg'] = $successMsj;
                $rs['success'] = TRUE;
            } catch (Exception $exc) {
                echo $exc->getTraceAsString();
                $rs['msg'] = $errorMsj;
                $rs['success'] = FALSE;
            }
        }else{
            $this->load->helper('form');
            $rs['msg'] =  validation_errors();
            $rs['success'] = FALSE;
        }
        echo json_encode($rs);
    }

    /**
     * Almacena los datos provenientes de un gridpanel
     */
    function saveDataGrid()
    {
        try {
            $json = $this->input->post('data'); //Objeto json con los datos modificados en el gridPanel
            $rs = array();
            $successMsj = 'Los datos del proveedor fueron almacenados exitosamente.';
            $errorMsj = 'Los datos del proveedor no pudieron ser almacenados. Por Favor intente de nuevo';

            $provs = json_decode($json);
            if(is_array($provs)){
                foreach ($provs as $prov){
                    $this->proveedores->setNombre($prov->nombre);
                    $this->proveedores->setDireccion($prov->direccion);
                    $this->proveedores->setEmail($prov->email);
                    $this->proveedores->setTelefono($prov->telefono);
                    if(!$this->proveedores->update($prov->id)){
                        throw new Exception('');
                    }
                }
            }elseif(is_object($provs)){
                $this->proveedores->setNombre($provs->nombre);
                $this->proveedores->setDireccion($provs->direccion);
                $this->proveedores->setEmail($provs->email);
                $this->proveedores->setTelefono($provs->telefono);
                if(!$this->proveedores->update($provs->id)){
                    throw new Exception('');
                }
            }
            $rs['msg'] = $successMsj;
            $rs['success'] = TRUE;
        } catch (Exception $exc) {
            //echo $exc->getTraceAsString();
            $rs['msg'] = $errorMsj;
            $rs['success'] = FALSE;
        }
        echo json_encode($rs);
    }
    /**
     * Obtiene los resultados de los proveedores paginados
     */
    function paginateList()
    {
        $this->load->helper('date');
        $this->load->helper('format');

        $start = $this->input->post('start');
        $limit = $this->input->post('limit');

        if(empty ($start)) $start=0;
        if(empty ($limit)) $limit=$this->getPageSize();

        $proveedores = $this->proveedores->getPaginateResult($start,$limit);
        $count = $this->proveedores->countAll();

        $proveedores = mysql_date_to_vzladate($proveedores, array('desde'));

        $paging = array(
            'success'=>true,
            'total'=>$count,
            'data'=> $proveedores
        );
        echo json_encode($paging);
    }

    /**
     *
     */
    function listar()
    {
        echo json_encode($this->proveedores->getAll());
    }
}
?>